package main

import (
	"github.com/labstack/echo/v4"
	"github.com/labstack/echo/v4/middleware"
	"log"
	"net/http"
	"strings"
)

// CORS (Cross-origin resource sharing) 中间件实现了 CORS 的标准。
// CORS为Web服务器提供跨域访问控制，从而实现安全的跨域数据传输。
func main() {
	// 创建一个Echo实例
	e := echo.New()
	//用法一：
	//e.Use(middleware.CORS())
	//用法二：自定义CORS配置 （推荐）
	e.Use(middleware.CORSWithConfig(CustomCORSConfig()))

	// 注册路由
	e.GET("/index", Index)
	e.POST("/body", Body)
	e.Start(":80")
}

// CustomCORSConfig
//
//	@Description: 自定义CORS配置
//	@return middleware.CORSConfig
func CustomCORSConfig() middleware.CORSConfig {
	return middleware.CORSConfig{
		Skipper: func(c echo.Context) bool {
			uri := c.Request().RequestURI
			if strings.Contains(uri, "/index") {
				log.Println("uri:", uri, "--->>>Skipper-true")
				return true
			}
			log.Println("uri:", uri, "--->>>Skipper-false")
			return false
		},
		AllowOrigins: []string{"https://labstack.com", "https://labstack.net"},
		AllowHeaders: []string{echo.HeaderOrigin, echo.HeaderContentType, echo.HeaderAccept},
	}
}

func Index(c echo.Context) error {
	return c.String(http.StatusOK, "index success!")
}

func Body(c echo.Context) error {
	return c.String(http.StatusOK, "body success!")
}
